using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Text;
using Credinka.Ayni.SEA.EN;
namespace Credinka.Ayni.SEA.AD
{
    public class adFormularioObjeto : adGeneral
    {
        public adFormularioObjeto(SqlConnection con)
        {
            conexion = con;
        }

        public List<enFormularioObjeto> fListar(enFormularioObjeto poenFormularioObjeto)
        {
            List<enFormularioObjeto> loenFormularioObjeto = null;
            enFormularioObjeto oenFormularioObjeto;
            SqlCommand cmd = new SqlCommand("sSEA_ConsultarFormularioObjeto", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piNumeroPagina", SqlDbType.Int).Value = poenFormularioObjeto.NumeroPagina;
            cmd.Parameters.Add("@piNumeroRegistros", SqlDbType.Int).Value = poenFormularioObjeto.NumeroRegistros;
            cmd.Parameters.Add("@pidFormulario", SqlDbType.Int).Value = poenFormularioObjeto.IdFormulario;
            SqlDataReader drd = cmd.ExecuteReader();
            if (drd != null)
            {
                int pos_TotalRegistros = drd.GetOrdinal("TotalRegistros");
                int pos_RowNumber = drd.GetOrdinal("RowNumber");
                int pos_IdFormulario = drd.GetOrdinal("iIdFormulario");
                int pos_CodigoObjeto = drd.GetOrdinal("iCodigoObjeto");
                int pos_DescripcionCorta = drd.GetOrdinal("descripcionCorta");
                int pos_Descripcion = drd.GetOrdinal("descripcion");
                loenFormularioObjeto = new List<enFormularioObjeto>();
                
                while (drd.Read())
                {
                    oenFormularioObjeto = new enFormularioObjeto();
                    oenFormularioObjeto.TotalRegistros = drd.GetInt32(pos_TotalRegistros);
                    oenFormularioObjeto.RowNumber = drd.GetInt32(pos_RowNumber);
                    oenFormularioObjeto.IdFormulario = (drd.IsDBNull(pos_IdFormulario) ? 0 : drd.GetInt32(pos_IdFormulario));
                    oenFormularioObjeto.CodigoObjeto = (drd.IsDBNull(pos_CodigoObjeto) ? 0 : drd.GetInt32(pos_CodigoObjeto));
                    oenFormularioObjeto.entDescripcion = new enDescripcion();
                    oenFormularioObjeto.entDescripcion.DescripcionCorta = (drd.IsDBNull(pos_DescripcionCorta) ? "" : drd.GetString(pos_DescripcionCorta));
                    oenFormularioObjeto.entDescripcion.Descripcion = (drd.IsDBNull(pos_Descripcion) ? "" : drd.GetString(pos_Descripcion));
                    loenFormularioObjeto.Add(oenFormularioObjeto);
                }
            }
            return (loenFormularioObjeto);
        }

        public List<enFormularioObjeto> fListarObjeto(enFormularioObjeto poenFormularioObjeto)
        {
            List<enFormularioObjeto> loenFormularioObjeto = null;
            enFormularioObjeto oenFormularioObjeto;
            SqlCommand cmd = new SqlCommand("sSEA_ListarFormularioObjeto", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@pidFormulario", SqlDbType.Int).Value = poenFormularioObjeto.IdFormulario;
            SqlDataReader drd = cmd.ExecuteReader();
            if (drd != null)
            {
                int pos_IdFormularioObjeto = drd.GetOrdinal("iIdFormularioObjeto");
                int pos_IdFormulario = drd.GetOrdinal("iIdFormulario");
                int pos_CodigoObjeto = drd.GetOrdinal("iCodigoObjeto");
                int pos_IdAlerta = drd.GetOrdinal("iIdAlerta");
                int pos_bAlerta = drd.GetOrdinal("bAlerta");
                int pos_DescripcionCorta = drd.GetOrdinal("descripcionCorta");
                int pos_Descripcion = drd.GetOrdinal("descripcion");
                loenFormularioObjeto = new List<enFormularioObjeto>();

                while (drd.Read())
                {
                    oenFormularioObjeto = new enFormularioObjeto();
                    oenFormularioObjeto.IdFormularioObjeto = (drd.IsDBNull(pos_IdFormularioObjeto) ? 0 : drd.GetInt32(pos_IdFormularioObjeto));
                    oenFormularioObjeto.IdFormulario = (drd.IsDBNull(pos_IdFormulario) ? 0 : drd.GetInt32(pos_IdFormulario));
                    oenFormularioObjeto.CodigoObjeto = (drd.IsDBNull(pos_CodigoObjeto) ? 0 : drd.GetInt32(pos_CodigoObjeto));
                    oenFormularioObjeto.IdAlerta = (drd.IsDBNull(pos_IdAlerta) ? 0 : drd.GetInt32(pos_IdAlerta));
                    oenFormularioObjeto.bAlerta = (drd.IsDBNull(pos_bAlerta) ? false : drd.GetBoolean(pos_bAlerta));
                    oenFormularioObjeto.entDescripcion = new enDescripcion();
                    oenFormularioObjeto.entDescripcion.DescripcionCorta = (drd.IsDBNull(pos_DescripcionCorta) ? "" : drd.GetString(pos_DescripcionCorta));
                    oenFormularioObjeto.entDescripcion.Descripcion = (drd.IsDBNull(pos_Descripcion) ? "" : drd.GetString(pos_Descripcion));
                    loenFormularioObjeto.Add(oenFormularioObjeto);
                }
            }
            return (loenFormularioObjeto);
        }

        public int fRegistrar(enFormularioObjeto poenFormularioObjeto)
        {
            int N = -1;
            SqlCommand cmd = new SqlCommand("sSEA_RegistrarFormularioObjeto", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piiIdFormulario", SqlDbType.Int).Value = poenFormularioObjeto.IdFormulario;
            cmd.Parameters.Add("@piiCodigoEstado", SqlDbType.Int).Value = poenFormularioObjeto.CodigoEstado;
            cmd.Parameters.Add("@piiAlerta", SqlDbType.Bit).Value = poenFormularioObjeto.bAlerta;
            cmd.Parameters.Add("@piiIdAlerta", SqlDbType.Int).Value = poenFormularioObjeto.IdAlerta;
            cmd.Parameters.Add("@pivAudNombreUsuarioCreacion", SqlDbType.VarChar).Value = poenFormularioObjeto.AudNombreUsuarioCreacion;
            cmd.Parameters.Add("@pivAudIPCreacion", SqlDbType.VarChar).Value = poenFormularioObjeto.AudIPCreacion;
            cmd.Parameters.Add("@pivAudMacCreacion", SqlDbType.VarChar).Value = poenFormularioObjeto.AudMacCreacion;
            cmd.Parameters.Add("@piiCodigoObjeto", SqlDbType.Int).Value = poenFormularioObjeto.CodigoObjeto;
            N = cmd.ExecuteNonQuery();
            return N;
        }

        public int fModificar(enFormularioObjeto poenFormularioObjeto)
        {
            int N = -1;
            SqlCommand cmd = new SqlCommand("sSEA_ModificarFormularioObjeto", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piiIdFormularioObjeto", SqlDbType.Int).Value = poenFormularioObjeto.IdFormularioObjeto;
            cmd.Parameters.Add("@piiIdFormulario", SqlDbType.Int).Value = poenFormularioObjeto.IdFormulario;
            cmd.Parameters.Add("@piiCodigoEstado", SqlDbType.Int).Value = poenFormularioObjeto.CodigoEstado;
            cmd.Parameters.Add("@pivAudNombreUsuarioModificacion", SqlDbType.VarChar).Value = poenFormularioObjeto.AudNombreUsuarioModificacion;
            cmd.Parameters.Add("@pivAudIPModificacion", SqlDbType.VarChar).Value = poenFormularioObjeto.AudIPModificacion;
            cmd.Parameters.Add("@pivAudMacModificacion", SqlDbType.VarChar).Value = poenFormularioObjeto.AudMacModificacion;
            cmd.Parameters.Add("@piiCodigoObjeto", SqlDbType.Int).Value = poenFormularioObjeto.CodigoObjeto;
            N = cmd.ExecuteNonQuery();
            return (N);
        }

        public int fEliminar(enFormularioObjeto poenFormularioObjeto)
        {
            int N = -1;
            SqlCommand cmd = new SqlCommand("sSEA_EliminarFormularioObjeto", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piiIdFormularioObjeto", SqlDbType.Int).Value = poenFormularioObjeto.IdFormularioObjeto;
            cmd.Parameters.Add("@pivAudNombreUsuarioModificacion", SqlDbType.VarChar).Value = poenFormularioObjeto.AudNombreUsuarioModificacion;
            cmd.Parameters.Add("@pivAudIPModificacion", SqlDbType.VarChar).Value = poenFormularioObjeto.AudIPModificacion;
            cmd.Parameters.Add("@pivAudMacModificacion", SqlDbType.VarChar).Value = poenFormularioObjeto.AudMacModificacion;
            N = cmd.ExecuteNonQuery();
            return (N);
        }

        public int fContar()
        {
            int totalFormularioObjeto;
            SqlCommand cmd = new SqlCommand("sSEA_ContarFormularioObjeto", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            totalFormularioObjeto = (int)cmd.ExecuteScalar();
            return (totalFormularioObjeto);
        }

        public List<enAlerta> fConsultarCorreosPorObjetoyFormulario(enFormularioObjeto poenFormularioObjeto)
        {
            List<enAlerta> loenAlerta = null;
            enAlerta oenAlerta;
            SqlCommand cmd = new SqlCommand("sSEA_ConsultarCorreosPorObjetoyFormulario", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@iIdFormulario", SqlDbType.Int).Value = poenFormularioObjeto.IdFormulario;
            cmd.Parameters.Add("@iCodigoObjeto", SqlDbType.Int).Value = poenFormularioObjeto.CodigoObjeto;
            SqlDataReader drd = cmd.ExecuteReader();
            if (drd != null)
            {
                int pos_Usuario = drd.GetOrdinal("Usuario");
                int pos_Asunto = drd.GetOrdinal("Asunto");
                int pos_Mensaje = drd.GetOrdinal("Mensaje");
                loenAlerta = new List<enAlerta>();

                while (drd.Read())
                {
                    oenAlerta = new enAlerta();
                    oenAlerta.Usuario = (drd.IsDBNull(pos_Usuario) ? string.Empty : drd.GetString(pos_Usuario));
                    oenAlerta.Asunto = (drd.IsDBNull(pos_Asunto) ? string.Empty : drd.GetString(pos_Asunto));
                    oenAlerta.Mensaje = (drd.IsDBNull(pos_Mensaje) ? string.Empty : drd.GetString(pos_Mensaje));
                    loenAlerta.Add(oenAlerta);
                }
            }
            return (loenAlerta);
        }
    }
}